package com.ltedu.system.service;

import com.ltedu.common.domain.SecurityUser;
import com.ltedu.common.dto.UserDTO;
import com.ltedu.common.vo.Result;
import com.ltedu.system.domain.SysUser;
import com.baomidou.mybatisplus.extension.service.IService;
import com.ltedu.system.domain.vo.SysUserVO;

/**
 * <p>
 * 后台用户信息 服务类
 * </p>
 *
 * @author Jerry
 * @since 2020-11-27
 */
public interface SysUserService extends IService<SysUser> {

    /**
     * 保存用户
     *
     * @param sysUserVo
     * @return {@link Boolean}
     */
    Boolean save(SysUserVO sysUserVo);

    /**
     * 更新用户
     *
     * @param sysUserVo
     * @return {@link Boolean}
     */
    Boolean update(SysUserVO sysUserVo);

    /**
     * 通过用户id找到角色列表
     *
     * @param userId 用户id
     * @return {@link Result}
     */
    Result findRoleListByUserId(Long userId);

    /**
     * 是否注册
     *
     * @param username 用户名
     * @return {@link Boolean}
     */
    Boolean isRegisted(String username);

    /**
     * 更改密码
     *
     * @param username    用户名
     * @param oldPassword 旧密码
     * @param newPassword 新密码
     * @return {@link Boolean}
     */
    Boolean changePassword(String username, String oldPassword, String newPassword);

    /**
     * 重置密码
     *
     * @param username 用户名
     * @return {@link Boolean}
     */
    Boolean resetPassword(String username);

    /**
     * 根据用户名查询用户信息
     *
     * @param username 用户名
     * @return {@link SysUser}
     */
    SecurityUser findUserByUsername(String username);

    /**
     * 改变用户状态
     *
     * @param sysUserVo 系统用户签证官
     * @return {@link Boolean}
     */
    Boolean changeUserState(SysUserVO sysUserVo);

    /**
     * 根据用户名获取用户信息
     *
     * @param username 用户名
     * @return {@link Result}
     */
    UserDTO loadByUsername(String username);

    /**
     * 获取用户信息
     *
     * @param userId 用户id
     * @return {@link UserDTO}
     */
    UserDTO info(Long userId);
}
